#ifndef PALADIN_H
#define PALADIN_H 1

#include "Classe.h"

using namespace std;

/**
 * Cette classe implémente le paladin de l'univers AD&D.
 * @author Johan "Solo" Luisier
 */
class Paladin : public Classe
{
 protected:
  /*
   * Définissent le nombre de compétences et de restritions disponibles.
   */
  static const unsigned nbrCompetences, /**< Nombre de compétences
					 disponibles. */
    nbrRestrictions, /**< Nombre de restrictions disponibles. */
    ppAlloues; /**< Nombre de pp alloués. */
  /*
   * Liste des compétences et restrictions disponibles.
   * @see CompetenceClasse
   */
  static const vector<CompetenceClasse> Comp, /**< Liste des compétences
					 disponibles */
    Restric;/**< Liste des restrictions disponibles */
  /**
   * Contient les prérequis sur les traits.
   */
  static const vector< Prerequis > Limites;
  /**
   * Contient les races pouvant devenir Paladin.
   */
  static const set< string > RacesAdmises;
  void calculNiveau();
  unsigned calculeTAc0() const;
  void calculNivMag();
 public:
  Paladin(unsigned xp, const vector< unsigned >& trait,
	  unsigned& PP,
	  const string& race);
  Paladin( unsigned xp );
  Paladin( const bool& UI );
  Paladin( Classe *ptr );
  ~Paladin();
  void js(unsigned *tab) const;
  void ecrireSorts( const string& nom_fichier, const bool& ecrase,
		    const unsigned& sagesse = -1u ) const;
  void sortsParNiveau( vector< unsigned >& sorts,
		       const unsigned& sagesse ) const;
  void prixAcces(map<string, unsigned>*& Map) const;
  unsigned aSpecialisation() const;
};

#endif
